/*
    在一个二维数组中（每个一维数组的长度相同），每一行都按照从左到右递增的顺序排序，
    每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。
*/

public class Problem01 {
    public static boolean Find( int [][] array,int target) {
        boolean found = false;
        if(array == null){
            return false;
        }
        int rows = array.length;
        int colums = array[0].length;
        if(rows > 0 && colums>0){
            int row = 0;
            int colum = colums-1;
            while(row<rows && colum>=0){
                if(array[row][colum] == target){
                    found = true;
                    return found;
                }
                if(array[row][colum]>target){
                    colum=colum-1;
                }else{
                    row++;
                }
            }
        }
        return found;
    }

    public static void main(String[] args) {
        int[][] matrix = {
                {1, 2, 8, 9},
                {2, 4, 9, 12},
                {4, 7, 10, 13},
                {6, 8, 11, 15}
        };
        System.out.println(Find(matrix, 7));    // 要查找的数在数组中
        System.out.println(Find(matrix, 5));    // 要查找的数不在数组中
        System.out.println(Find(matrix, 1));    // 要查找的数是数组中最小的数字
        System.out.println(Find(matrix, 15));   // 要查找的数是数组中最大的数字
        System.out.println(Find(matrix, 0));    // 要查找的数比数组中最小的数字还小
        System.out.println(Find(matrix, 16));   // 要查找的数比数组中最大的数字还大
        System.out.println(Find(null, 16));     // 健壮性测试，输入空指针
    }
}
